package com.example.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.common.PageResult;
import com.example.pojo.dto.PostQueryDto;
import com.example.pojo.entity.Post;
import com.example.pojo.vo.PostQueryVo;
import java.util.List;

/**
 * 帖子 service 层接口
 */
public interface PostService extends IService<Post> {

    /**
     * 普通用户发布帖子
     *
     * @param post 帖子
     */
    void createPost(Post post);

    /**
     * 分页查询帖子
     *
     * @param dto 条件
     * @return 分页结果
     */
    PageResult<PostQueryVo> pageQuery(PostQueryDto dto);

    /**
     * 分页查询当前普通用户自己的帖子
     *
     * @param dto 条件
     * @return 分页结果
     */
    PageResult<PostQueryVo> pageQueryPerson(PostQueryDto dto);

    /**
     *  分页查询宠物论坛帖子
     *
     * @param dto 条件
     * @return 分页结果
     */
    PageResult<PostQueryVo> pageQueryForumPost(PostQueryDto dto);

    /**
     * 根据帖子id查询帖子详情
     *
     * @param id 帖子id
     * @return 帖子详情
     */
    PostQueryVo queryPostDetail(Integer id);


    /**
     * 增加帖子浏览量
     *
     * @param id 帖子id
     */
    void addPostViewCount(Integer id);

    /**
     * 管理员审核帖子
     *
     * @param post 帖子
     */
    void auditPost(Post post);

    /**
     * 普通用户修改帖子
     *
     * @param post 帖子
     */
    void update(Post post);

    /**
     * 根据帖子id删除帖子
     *
     * @param id 帖子id
     */
    void delete(Integer id);

    /**
     * 根据帖子id列表删除帖子
     *
     * @param ids 帖子id列表
     */
    void deleteBatch(List<Integer> ids);
}
